package com.study.design.pattern.pattern.behavioral.observer.guava;

import com.google.common.eventbus.EventBus;

/**
 * @Author: gongsl
 * @Date: 2025-03-24 20:49
 */
public class Test {
    private static final EventBus eventBus = new EventBus();

    public static void main(String[] args) {
        // 注册所有订阅者（实际项目中可通过Spring等DI容器管理）
        eventBus.register(new SmsNotifier());
        eventBus.register(new AppNotifier());
        // 模拟快递状态更新
        updateDeliveryStatus("ORDER_123", "已发货", "13800138000");
        updateDeliveryStatus("ORDER_123", "已签收", "13800138000");
    }

    /**
     * 业务方法：更新快递状态并发布事件
     */
    private static void updateDeliveryStatus(String orderId, String newStatus, String phone) {
        System.out.println("\n====== 更新物流状态至：" + newStatus + " ======");
        // 创建并发布事件
        DeliveryStatusUpdateEvent event = new DeliveryStatusUpdateEvent(orderId, newStatus, phone);
        // 触发所有订阅者的处理方法
        eventBus.post(event);
    }
}
